﻿//链表为空时数据的情况
//#include<stdio.h>
//#include<stdlib.h>
//struct s
//{
//	int a;
//	struct s* next;
//};
//int main()
//{
//	struct s* p = (struct s*)malloc(sizeof(struct s));
//	p = NULL;
//	fprintf(stdout, "%d", p->a);//输出为空，即里面什么也没有并且程序会出错
//	//注意，当链表为空时，里面没有任何数据
//	free(p);
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//typedef struct s
//{
//    int val;
//    struct s* next;
//}ListNode;
//ListNode* partition(ListNode* pHead, int x)
//{
//    ListNode* pa = pHead, * p = pHead, * pp = pHead, * head = 0, * head1 = pHead;
//    if (pHead->val < x)
//    {
//        p = pHead;
//    }
//    else
//    {
//        while (head1)
//        {
//            if (head1->val < x)
//            {
//                p = head1;
//                pp->next = p->next;
//                p->next = pHead;
//                pHead = p;
//                break;
//            }
//            pp = head1;
//            head1 = head1->next;
//        }
//    }
//    head = pHead;
//    while (pHead)
//    {
//        if (pHead->val < x)
//        {
//            pp = pHead->next;
//            pa->next = pp;
//            pHead->next = p->next;
//            p->next = pHead;
//            p = pHead;
//            pHead = pp;
//        }
//        else
//        {
//            pa = pHead;
//            pHead = pHead->next;
//        }
//    }
//    return head;
//}
//int main()
//{
//    ListNode* head, * p, * pa;
//    head = p = (ListNode*)malloc(sizeof(ListNode));
//    fscanf(stdin, "%d", &p->val);
//    while (p->val)
//    {
//        pa = (ListNode*)malloc(sizeof(ListNode));
//        p->next = pa;
//        p = pa;
//        fscanf(stdin, "%d", &p->val);
//    }
//    p->next = 0;
//    int x = 0;
//    fscanf(stdin, "%d", &x);
//    for (p = partition(head, x); p; p = p->next)
//    {
//        fprintf(stdout, "%d ", p->val);
//    }
//    return 0;
//}
